A content distributor employs one or more servers to distribute content over the Internet to an end user operating a client device. The servers may be networked together to more efficiently provide content to the end user. The content to be distributed may include a document or resource of information suitable for the World Wide Web and accessible through a web browser, a multimedia file for playback or display on the client device of the end user, or any other type of electronic information. As examples, the content may be a web page, a video file, an audio file, or any other type of electronic media.
The content distributor may use a content-distribution network to distribute content to end users. Generally, a content-distribution network is a system of computers that are networked together across the Internet and cooperate transparently for distributing content.
In configuring the content-distribution network, the content for distribution may reside on one or more servers. The content distributor may use one or more proxy servers for accepting incoming connections from the end users and/or for distributing or servicing incoming connections.
However, for a single proxy server, or even multiple proxy servers, managing hundreds of thousands of incoming connections is a challenging task. Since each connection requires memory from the proxy server to maintain, the proxy server may quickly run out of memory and may not be able to maintain all of the connections. One approach for managing incoming connections is for the proxy server to place a queue limit on the number of incoming connections waiting for service and/or distribution. In this first approach, the proxy server may set a limit that only 5, 100, or 1,000 incoming connections may be queued. A second approach that the proxy server may employ is limiting the amount of time that any one incoming connection may be idle. In this second approach, the proxy server may set a limit that an incoming connection may only be idle for a fixed amount of time. After this fixed amount of time has expired, the proxy server may then terminate, or drop, the connection.
Both of the aforementioned approaches require that the proxy server set, beforehand, a relatively unknown limit on either the number of queued connections or the amount of time that a connection may be idle. Neither of these approaches adequately account for the actual performance of the proxy server.